/*
 * Mantenimiento.java
 */
package incidencias;

import accesoBD.*;
import java.sql.*;

/**
 * Clase que trata el rol de Mantenimiento
 * @author Juan Antonio Cobo Zamora
 */
public class Mantenimiento {

    public static QueryTecnico query;

    /**
     * Constructor de la clase Supervisor
     * @param q QuerySupervisor para realizar las consultas con la BD
     */
    public Mantenimiento(QueryTecnico q) {
        query = (QueryTecnico) q;

    }

    /**
     * Cerramos el Parte pasado por parámetro
     * @param numparte
     * @throws SQLException 
     */
    public static void CerrarParte(int numparte) throws SQLException {
        query.cerrarParte(Integer.toString(numparte));
    }

    /**
     * Creamos una nueva incidencia al parte pasado por parámetro
     * @param idparte -> Parte al que se le quiere añadir la incidencia
     * @param incidencia -> Incidencia a crear
     * @throws SQLException 
     */
    public static void crearIncidencia(int idparte, String incidencia) throws SQLException {
        query.añadirIncidencia(idparte, incidencia);
    }

    /**
     * Creamos una nueva actuación a la incidencia pasada por parámetro
     * @param idactuacion iD de la incidencia a la que se le quiere crear la Actuación
     * @param testimado Tiempo estimado de la actuación
     * @param tinvertido Tiempo invertido en la actuación
     * @param actuacion Actuación realizada a la incidencia 
     * @param coste Coste de la actuación
     * @throws SQLException 
     */
    public static void añadirActuacion(String idincidencia, String testimado, String tinvertido, String actuacion, String coste) throws SQLException {
        query.addActuacion(idincidencia, testimado, tinvertido, actuacion, coste);
    }
    
      /**
     * Rechazamos el parte enviado por parámetro
     * @param id_parte ID del parte que se rechaza
     * @param id_actuacion ID de la actuacion concreta que no se es capaz de solucionar
     * @param rechazo Motivo del rechazo de dicho parte
     * @throws SQLException 
     */
    public static void rechazarParte(int id_parte,int id_actuacion, String rechazo) throws SQLException{
        query.rechazarParte(id_parte,id_actuacion,rechazo);
    }

    /**
     * Actualizamos la incidencia pasada por parámetro
     * @param idactuacion iD de la actuación que se quiere actualizar
     * @param testimado Tiempo estimado de la actuación
     * @param tinvertido Tiempo invertido en la actuación
     * @param actuacion Actuación realizada a la incidencia 
     * @param coste Coste de la actuación
     * @throws SQLException 
     */
    public static void actualizarActuacion(String idactuacion, String testimado, String tinvertido, String actuacion, String coste) throws SQLException {
        query.updateActuacion(idactuacion, testimado, tinvertido, actuacion, coste);
    }

    /**
     * Obtenemos todos los datos de la actuación pasada por parámetro
     * @param idactuacion ID de la actuacion a la que queremos recuperar sus datos
     * @return Un objeto resultSet que contiene todos los datos asociados a dicha actuación
     * @throws SQLException 
     */
    public static ResultSet getActuacion(String idactuacion) throws SQLException {
        return (query.getActuacion(idactuacion));
    }

    /**
     * Obtenemos el identificador de la actuación asociada a la incidencia
     * pasada por parámetro
     * @param idincidencia Incidencia de la cual queremos el id de actuación
     * @return Un int con el id de la actuación
     * @throws SQLException 
     */
    public static int getActuaciondeIncidencia(int idincidencia) throws SQLException {
        return (query.getActuacionDeIncidencia(idincidencia));
    }

    /**
     * Obtenemos los partes asignados al técnico de mantenimiento logeado
     * @return Un objeto resultSet que contiene los partes de los que es responsable 
     * dicho técnico de mantenimiento.
     * @throws SQLException 
     */
    public static ResultSet partesAsignados() throws SQLException {

        return (query.getPartesResposable());
    }

    /**
     * Obtenemos la descripción del parte pasado por parámetro
     * @param id_parte int ID del Parte  que queremos la descripción
     * @return Un string con todos los datos de la descripción del parte.
     * @throws SQLException 
     */
    public static String descripcionParte(int id_parte) throws SQLException {

        ResultSet rset = query.getPartesInfo(id_parte);
        String descripcion = " ", estado = " ", codigo_interno = " ", codigo_publico = " ";
        String color = " ", fecha_compra = " ", marca = " ", modelo = " ", planta = " ";
        String pasillo = " ", sala = " ";
        int id_aparato = 0, garantia = 0;

        while (rset.next()) {
            descripcion = rset.getString(1);
            estado = rset.getString(2);
            id_aparato = rset.getInt(3);
            codigo_interno = rset.getString(4);
            codigo_publico = rset.getString(5);
            color = rset.getString(6);
            fecha_compra = rset.getString(7);
            garantia = rset.getInt(8);
            marca = rset.getString(9);
            modelo = rset.getString(10);
            planta = rset.getString(11);
            pasillo = rset.getString(12);
            sala = rset.getString(13);
        }
        String parte = "Descripción: " + descripcion + "\nEstado: " + estado + "\nId aparato: " + id_aparato + "\nCodigo Interno: " + codigo_interno + "\nCodigo Publico: " + codigo_publico;
        parte += "\nColor: " + color + "\nFecha Compra: " + fecha_compra + "\nGarantía(meses): " + garantia + "\nMarca: " + marca + "\nModelo: " + modelo;
        parte += "\n---Ubicación---" + "\nPlanta: " + planta + "\nPasillo: " + pasillo + "\nSala: " + sala;
        return (parte);
    }

    /**
     * Obtenemos tanto las incidencias asociadas al parte pasado por parámetro
     * @param id_parte int ID del Parte del que queremos las incidencias asociadas
     * @return Un objeto resultSet que contiene las incidencias asociadas a dicho parte.
     * @throws SQLException 
     */
    public static ResultSet diagnosticoParte(int id_parte) throws SQLException {
        return query.getDiagnosticoDeParte(id_parte);
    }
}